package org.mbcorp.sar.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.springframework.web.multipart.MultipartFile;

@Entity
@Table
public class Actividad {

	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
	private Integer id;
	
	@Column
	private String nombre;
	
	@Column
	private Date fechaInicio;
	
	@Column
	private Date fechaFin;
	
	@Column
	private String descripcion;
	
	@Column
	private String comentarios;
	
	@JoinColumn(name = "operador")
	@ManyToOne(optional = false, fetch = FetchType.EAGER)
	private Operador operador;
	
	@JoinColumn(name = "fase")
	@ManyToOne(optional = false, fetch = FetchType.EAGER)
	private Fase fase;
	
	@JoinColumn(name = "archivo", referencedColumnName = "id")
	@ManyToOne(optional = true, fetch = FetchType.EAGER)
	private Archivo archivo;

	@Transient
	private MultipartFile archivoAux;
	
	@Transient
	private boolean flagCierre;
	
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Date getFechaInicio() {
		return fechaInicio;
	}

	public void setFechaInicio(Date fechaInicio) {
		this.fechaInicio = fechaInicio;
	}

	public Date getFechaFin() {
		return fechaFin;
	}

	public void setFechaFin(Date fechaFin) {
		this.fechaFin = fechaFin;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getComentarios() {
		return comentarios;
	}

	public void setComentarios(String comentarios) {
		this.comentarios = comentarios;
	}

	public Operador getOperador() {
		return operador;
	}

	public void setOperador(Operador operador) {
		this.operador = operador;
	}

	public Fase getFase() {
		return fase;
	}

	public void setFase(Fase fase) {
		this.fase = fase;
	}

	public Archivo getArchivo() {
		return archivo;
	}

	public void setArchivo(Archivo archivo) {
		this.archivo = archivo;
	}	
	
	public MultipartFile getArchivoAux() {
		return archivoAux;
	}

	public void setArchivoAux(MultipartFile archivoAux) {
		this.archivoAux = archivoAux;
	}	

	public boolean isFlagCierre() {
		return flagCierre;
	}

	public void setFlagCierre(boolean flagCierre) {
		this.flagCierre = flagCierre;
	}

	@Transient
	public String getEstado(){
		if(this.getFechaFin() != null){
			return "Finalizado";
		} else {
			if(this.getDescripcion() != null){
				return "En proceso";
			} else {
				return "Iniciado";
			}			
		}
	}
	
}
